#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
//class Date
//{
//public:
//	Date(int year = 1, int month = 1 , int day = 1)//构造函数
//	{
//		_year = year;
//		_month = month;
//		_day = day;
//	}
//	
//	void Print()
//	{
//		cout << _year<< "-" << _month << "-" << _day << endl;
//
//	}
//private:
//	int _year;
//	int _month;
//	int _day;
//};
//int main()
//{
//	Date d1;
//	d1.Print();
//	Date d2(d1);
//	d2.Print();
//	return 0;
//}

//class Time
//{
//public:
//	Time(int _hour = 1, int _minute = 1, int _second = 1)//构造函数
//	{}
//	Time(const Time& t)//拷贝构造函数
//	{
//		cout << "Time(const Time& t)" << endl;
//	}
//private:
//	int _hour;
//	int _minute;
//	int _second;
//};
//class Date
//{
//public:
//	void Print()
//	{
//		cout << _year << "-" << _month << "-" << _day << endl;
//	}
//private:
//	//内置类型
//	int _year = 1;
//	int _month = 1;
//	int _day = 1;
//	//自定义类型
//	Time _t;
//};
//int main()
//{
//	Date d1;
//	Date d2(d1);//用d1拷贝构造d2 此处会调用Date类的拷贝构造函数
//	            //但是Date的拷贝构造函数是编译器默认生成的 自定义变量_t就会去调用Time类的拷贝构造
//	            //所以这里会打印 Time(const Time& t)
//	
//	return 0;
//}

class Stack
{
public:
	Stack(size_t capacity = 10)
	{
		_arr = (int*)malloc(capacity * sizeof(int));
		if (_arr == nullptr)
		{
			perror("malloc fail");
			exit(-1);
		}
		_size = 0;
		_capacity = capacity;
	}
	~Stack()
	{
		if (_arr)
		{
			free(_arr);
			_arr = nullptr;
			_capacity = _size = 0;
		}
	}
	void Push(int x)
	{
		_arr[_size] = x;
		_size++;
	}
private:
	int* _arr;
	size_t _size;
	size_t _capacity;
};
int main()
{
	Stack s1;
	s1.Push(1);
	s1.Push(2);
	s1.Push(3);
	Stack s2(s1);
	return 0;
}